home *** CD-ROM | disk | FTP | other *** search
- /**********************************************************************
- *
- * NAME: mouse.h
- *
- * DESCRIPTION: C++ mouse handler
- *
- * M O D I F I C A T I O N H I S T O R Y
- *
- * when who what
- * -------------------------------------------------------------------
- * 12/15/90 J. Alan Eldridge created
- *
- *********************************************************************/
-
- #ifndef __MOUSE_H
- #define __MOUSE_H
-
- #ifndef __cplusplus
- #error mouse.h needs a C++ compiler
- #endif
-
- #if defined(__TURBOC__)
-
- struct MouEvent {
- int event;
- int buttons;
- int vertpos;
- int horzpos;
- int kbshift;
- long ticks;
- };
-
- void mou_seteventhandler(int mask,
- void cdecl huge _saveregs (*func)());
- int mou_swapeventhandler(int mask,
- void cdecl huge _saveregs (*newhandler)(),
- void cdecl huge _saveregs (**oldhandler)());
-
- // bits for event masks
-
- enum {
- // mouse events
- MouEvMove = 0x01,
- MouEvLeftDown = 0x02,
- MouEvLeftUp = 0x04,
- MouEvRightDown = 0x08,
- MouEvRightUp = 0x10,
- MouEvCenterDown = 0x20,
- MouEvCenterUp = 0x40,
- MouEvAllEvents = 0x7F,
- // shift key events
- MouKInsert = 0x0080,
- MouKCapsLk = 0x0040,
- MouKNumLk = 0x0020,
- MouKScrlLk = 0x0010,
- MouKAltDn = 0x0008,
- MouKCtlDn = 0x0004,
- MouKLShDn = 0x0002,
- MouKRShDn = 0x0001,
- MouKInsDn = 0x8000,
- MouKCapsLkDn = 0x4000,
- MouKNumLkDn = 0x2000,
- MouKScrlLkDn = 0x1000,
- MouKKBHold = 0x0800
- };
-
- // driver functions
- int mou_resetmouse();
- void mou_showptr();
- void mou_hideptr();
- inline void mou_refreshptr() // ugly, but works
- { mou_hideptr(); mou_showptr(); }
- void mou_setsoftptr(int andmask = 0x77ff, int xormask = 0x7700);
- void mou_sethardptr(int start = 0, int end = 7);
- int mou_savestatesize();
- void mou_savestate(unsigned char *buf);
- void mou_restorestate(unsigned char *buf);
- int mou_resetdriver();
- void interrupt (*mou_disabledriver())();
- void mou_enabledriver();
-
- // (very) general status
- int mou_exists();
- int mou_buttons();
-
- // button info
- int mou_buttonpress(int &n, int &v, int &h);
- int mou_buttonrelease(int &n, int &v, int &h);
-
- // pointer settings
- void mou_sethlimits(int minval, int maxval);
- void mou_setvlimits(int minval, int maxval);
- void mou_setposition(int v, int h);
- void mou_setexclusionarea(int yul, int xul, int ylr, int xlr);
-
- // interrupt handler control
- int mou_seteventmask(int newmask = MouEvAllEvents);
- int mou_getevent(MouEvent &ev);
- void mou_flushevents();
- int mou_seteventqsize(int newsize = 0);
-
- // keyboard shift state
- extern volatile int far *mou_pkbshift;
- inline int mou_getkbshift()
- { return *mou_pkbshift; }
-
- // high level interrupt handler control
- int mou_setusermask(int newmask = MouEvAllEvents);
- void mou_setuserfunc(int (*userfunc)(MouEvent &) = 0);
-
- #endif // __TURBOC__
-
- #endif // __MOUSE_H
-
-